<?php
class CodigoHelper extends AppHelper {

    var $tags = array(
	'javascriptstart' => '<script type="text/javascript">',
	'javascriptend' => '</script>',
	'javascriptblock' => '<script type="text/javascript">%s</script>',
	'javascriptlink' => '<script type="text/javascript" src="%s"></script>');

    /**
     *
     * @param array $args
     *          input:          identificador del objeto DOM (input) - obligatorio
     *          id:             identificador del objeto DOM (donde se carca el id, omologo con input)
     *          secondaries:    arreglo opcional con otros inputs fuente
     *          url:            controller/action (si no existe toma '')
     *          mantenerDatos:  eliminar o mantener los datos por cada llamada
     *          conditionSend:  condiciona los inputs involucrados
     *          minLength:      cantidad minima de caracteres necesaria para enviar la peticion (1 por defecto)
     *          loop:           cantidad de intentos en caso que no se encuentre el servidor (3 por defecto)
     *          event:          evento al que se aplicara (blur por defecto)
     *          params:         array de parametros adicionales a enviar al servidor (action=#)
     *          value:          uso interno para pasar el valor de los datos
     *          message:        mensaje de error sino encuentra el codigo (puede ser un arreglo para campo compuesto)
     *          main:           campo simple o arreglo de los campos a mostrar al costado del input (opcional)
     *          pattern:        patron para campo compuesto
     *          fields:         arreglo de inputs con su campo correspondiente
     * @param boolean $echo
     */
    function simpleCode($args = array(), $echo = true){
        //verificando si se ha pasado url o controller y action
        if (array_key_exists('url', $args) ||
                (array_key_exists('controller', $args) ||
                    array_key_exists('action', $args)))
            $url = !empty($args['url'])?Router::url($args['url'], true):Router::url("/$args[controller]/$args[action]");
        else
            $url=Router::url('', true);
		
        $limpiar_campos = 0;
        if(array_key_exists('mantenerDatos', $args)){
                $limpiar_campos = empty($args['mantenerDatos'])?0:1;
        }
        $_cond = null;
        if(array_key_exists('conditionSend', $args)){
                $_cond = $args['conditionSend'];
        }

        //longitud mínima para solicitud de datos
        $minLength = 1;
        if(array_key_exists('minLength', $args)){
                $minLength = !empty($args['minLength'])?$args['minLength']:0;
        }
        if(isset($args['event'])){
                $_event = $args['event'];
        } else {
                $_event = 'blur';
        }

        if(isset($args['loop'])){
                $_loop = $args['loop'];
        } else {
                $_loop = '3';
        }
		
        // tomando el campo input
        $input = $args['input'];
        $inputFunc = $input.'Event';
        $inputObj = "$('#$args[input]')";
        $inputVal = "$inputObj.val()";		
        $inputXHR = $input.'XHR';
		$toScript = '';
        //tomando los paramentros en el arreglo params
        if (array_key_exists('params', $args)){
            $params = $args['params'];
            $keys = array_keys($params);
            foreach($keys as $key){
                $toScript .= "$key: $params[$key], ";
            }
        }
        $toScriptId = $toScript;
        $toScript .= "$input: $inputVal";		
		if(!$_cond)
			$cond1 = "($inputVal != undefined && $.trim($inputVal) != '')";
		else 
			$cond1 = $_cond;
        $cond2 = "";
        $id = array_key_exists('id', $args)?$args['id']:'';
        if ($id != ''){
            $idObj = "$('#$id')";
            $idVal = "$idObj.val()";
            $cond2 .= " ($idVal != undefined && $.trim($idVal) != '') ";
            $toScriptId .= "$id: $idVal";
        }
        //arreglo de campos secundarios
        $secs = array_key_exists('secondaries', $args)?$args['secondaries']:array();
        foreach($secs as $sec){
            $secObj = "$('#$sec')";
            $secVal = "$secObj.val()";
            $cond1 .= " && ($secVal != undefined && $.trim($secVal) != '')";
            $toScript .= ", $sec: $secVal";
            $toScriptId .= ", $sec: $secVal";
        }
        //tomando el mensaje
        $message = array_key_exists('message', $args)?$args['message']:'Error código no encontrado!';
        //registrando los campos del objeto json
        //campo descripcion a mostrar al costado del codigo (puede ser un campo compuesto)
        $mainField = array_key_exists('main', $args)?$args['main']:'';
        $displayField = '';
        if (is_array($mainField)){
            if (array_key_exists('pattern', $args)){
                for ($i = 0; $i < count($mainField);$i++){
                    if ($i == 0){
                        $m = $mainField[$i];
                    }
                    $mainField[$i] = "data.$mainField[$i]";
                }
                
                $params = array_merge(array($args['pattern']), $mainField);
                $displayField = call_user_func_array('sprintf', $params );
            }
            else{
                for ($i = 0; $i < count($mainField);$i++){
                    if ($i > 0)
                        $displayField .= "+";
                    else
                        $m = $mainField[$i];
                    $displayField .= "data.$mainField[$i]";
                }
            }
            $mainField = "data.$m";
        }
        elseif ($mainField != ''){
            $mainField = "data.$mainField";
            $displayField = $mainField;
        }
        else{
            $displayField = '';
        }
        // demas campos y sus inputs
        $fields = array_key_exists('fields', $args)?$args['fields']:array();
        $fieldsAssignation = '';
        $keys = array_keys($fields);
		
		$inputFuncObjs = $input.'Objs';
		$ajaxfields = "$inputFuncObjs = $('#".  implode(',#',$keys)  ."')";		//------------------------------------------>
		$prevValue = $input . '_prevValue';
		
        foreach ($keys as $k){
            if ($displayField == '')
                $mainField = "data.".$fields[$keys[0]];
            if (is_array($fields[$k])){
                $val = '';
                $vPattern = array_key_exists('pattern', $fields[$k])?$fields[$k]['pattern']:'';
                $field = $fields[$k];
                unset($field['pattern']);
                if ($vPattern != ''){
                    for($i=0;$i<count($field);$i++){
                        $field[$i] = 'data.'.$field[$i];
                    }
                    $params = array_merge(array($vPattern), $field);
                    $val = call_user_func_array('sprintf', $params );
                }
                else
                    for($i=0;$i<count($field);$i++){
                        if ($i > 0)
                            $val .= '+';
                        $val .= 'data.'.$field[$i];
                    }
            }
            else
                $val = 'data.'.$fields[$k];
            $fieldsAssignation .= "
                $('#$k').val($val);\n";
//                if (recursive == true){
//                    recursive = false;
//                    $('#$k').$_event();
                    
//                    var event = $('#$k').attr('$_event');\n
//                    if (typeof event != 'function')
//                        event.handler();
//                }
//            ";
        }
		
        // callback
        $callback = array_key_exists('callback', $args)?$args['callback']:'';
        $before = array_key_exists('callbackbefore', $args)?$args['callbackbefore']:'';
        $wating = array_key_exists('wating', $args)?$args['wating']:'true';
        $script = "
            var $prevValue, $inputXHR;
            $(function(){
                var recursive = true;
				var $ajaxfields;
                ";
                if ($id != ''){
                    $script .= "$inputFunc(true);";
                }
                $script .= "
                $inputObj.focus(function(){
                        $('img.loader').remove();
                });	
                $inputObj.$_event(function(){
                    if(this.value.length >= $minLength){
                        if(this.value && this.value != $prevValue && $wating){
                            for(var i=0, j=$inputFuncObjs.length; i<j; i++){
                                if($inputFuncObjs [i].type === 'text' || $inputFuncObjs [i].type === 'textarea' || $inputFuncObjs [i].type === 'select-one'){
                                    $($inputFuncObjs [i]).after('<img src=\"'+ _WEB_ROOT + 'img/ajax1.gif\" class=\"loader\" alt=\"...\">');
                                }
                            }
                            $(this).after('<img src=\"'+  _WEB_ROOT  +'img/ajax1.gif\" class=\"loader\" alt=\"...\">');
                            //$inputFunc();  //debería estar aquí para no reenviar los datos, pero por compatibilidad se mantiene afuera
                            $prevValue = this.value;
                        }
                        $inputFunc();
                    }
                });
				var {$input}_loop = 1;
                function $inputFunc(){
                    if ($cond1){
                    	if($inputXHR){ $inputXHR.abort(); }
                        $inputXHR = $.post('$url', { $toScript }, function(data){
                            $before
                            if((typeof data != 'object')&&(data != '')){
                                if({$input}_loop < {$_loop}){
                                    $inputObj.$_event();
                                    {$input}_loop++;
                                } else {
                                    alerta('Error de datos consulte a sistemas','Advertencia');
                                    {$input}_loop = 1;
                                }
                            } else{
                                if (data != ''){
									$inputObj.data('simpleCode:data', data);
                                    if ($inputObj.parent().children('#message').length == 0)
                                        $inputObj.parent().append('&nbsp;<span id=\"message\" style=\"font-weight:bold;color:black\">".($displayField != ''?"'+$displayField+'":'')."</span>');
                                    else
                                        $inputObj.parent().children('#message').html(".($displayField != ''?$displayField:'\'\'').").css('color','black');
                                    $fieldsAssignation
                                } else {
									$inputObj.removeData('simpleCode:data');
                                    $prevValue = '';
                                    if ($inputObj.parent().children('#message').length == 0)
                                        $inputObj.parent().append('<span id=\"message\" style=\"font-weight:bold;color:red\">$message</span>');
                                    else
                                        $inputObj.parent().children('#message').html('$message').css('color','red');
                                    if ( ". $limpiar_campos ." == false){
                                        //restableciendo los controles a su estado inicial
                                        objs = $inputFuncObjs;
                                        for(var i = 0, j = objs.length; i<j; i++){
                                            if(objs[i].type == 'text' || objs[i].type == 'hidden' || objs[i].type=='textarea'){
                                                objs[i].value='';
                                            }
                                            if(objs[i].type == 'select-one'){
                                                objs[i].value=0;
                                            }
                                            if(objs[i].type == 'checkbox' || objs[i].type == 'radio'){
                                                if(objs[i].defaultChecked){
                                                    objs[i].checked=true;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            $('img.loader').remove();
                            $callback
                        });
                    }";
        if ($id != ''){
          $script .= "
                    else if ($cond2){
                        $.post('$url', { $toScriptId }, function(data){
                            try{
							if ($mainField != undefined){
                                if ($inputObj.parent().children('#message').length == 0)
                                    $inputObj.parent().append('&nbsp;<span id=\"message\" style=\"font-weight:bold;color:black\">".($displayField != ''?"'+$displayField+'":'')."</span>');
                                else
                                    $inputObj.parent().children('#message').html(".($displayField != ''?$displayField:'\'\'').").css('color','black');
                                $fieldsAssignation
                             } 	
							  } catch(err){ 
							  	//alert('ERROR'); 
							  }
							  //alert(1);
							 $('img.loader').remove();
                             $callback
                        }
						);
                    }";
                }
                $script .= "
				}
            });
        ";
        $view =& ClassRegistry::getObject('view');
        $view->addScript(sprintf($this->tags['javascriptblock'], $script));
    }

    //  parametros del metodo:
    //
    //  url = direccion del metodo que atendera la peticion ajax
    //        o controller y action
    //  params = array de paramentros a pasar por querystring (action, etc.)
    //  input = nombre del input donde se aplicara el buscador
    //  title = hint del boton buscar
    //  model = nombre del modelo que recibira del servidor
    //  id = nombre del campo id que recibira del servidor
    //  description = nombre del campo descripcion que recibira del servidor
    //  filter = inputs adicionales por las cuales se filtrara
    //	callback = codigo a ejecutarse después de la carga de datos


    function dialogBox($args = array()){
        if (array_key_exists('url', $args) ||
                (array_key_exists('controller', $args) ||
                    array_key_exists('action', $args)))
            $url = !empty($args['url'])?Router::url($args['url'], true):Router::url("/$args[controller]/$args[action]");
        else
            $url = Router::url('', true);
		
        if(isset($args['event'])){
                $_event = $args['event'];
        } else {
                $_event = 'blur';
        }
		
        $input = $args['input'];
        if (empty($input)) exit;
        $model = $args['model'];
        $title = array_key_exists('title', $args)?$args['title']:'';
        $inputObj = "$('#$args[input]')";
        $inputVal = "$inputObj.val()";
        $inputText = $input.'Text';
        $inputTextObj = "$('#$inputText')";
        $inputTextVal = "$inputTextObj.val()";
        $inputSelect = $input.'Select';
        $inputSelectObj = "$('#$inputSelect')";
        $inputButton = $input.'Search';
        $inputButtonObj = "$('#$inputButton')";        
        $toScript = '';
		if(empty($args['width'])){
		$width= 470;
		}else{
		$width= $args['width'];
		}
		
        $inputXHR = $input.'XHR';
        //tomando los paramentros en el arreglo params
        if (array_key_exists('params', $args)){
            $params = $args['params'];
            $keys = array_keys($params);
            foreach($keys as $key){
                $toScript .= "$key: $params[$key], ";
            }
        }
        //filters
        if (array_key_exists('filter', $args)){
            $filter = $args['filter'];
            $keys = array_keys($filter);			
            foreach($keys as $key){
                $toScript .= "$filter[$key]: $('#$filter[$key]').val(), ";								
            }			
        }
        $toScript .= "$input: $inputTextVal, model: '$model'";
        //if (!empty($model)) $model = $model.'.';
        $img = Router::url('/img/search.png', true);
        $imgIdButton = $input.'Button';
        $imgIdModal = $input.'Modal';
        $id = array_key_exists('id', $args)?$args['id']:'id';
        $secid = array_key_exists('secid', $args)?$args['secid']:'id';
        $description = array_key_exists('description', $args)?$args['description']:'descripcion';
        //div de la ventana modal
		
        $modalWindow = "\\
<div id='$imgIdModal' style='display: none;'>\\
    <div class='d-header'>\\
        <p/>\\
        <input type='text' id='$inputText' style='position:relative;top:-15px;left:5%;width:90%;margin-top:4px;' /><br/>\\
        <select name='list' size='5' id='$inputSelect' style='position:relative;top:-15px;left:5%;width:90%;margin-top:4px;'></select>\\
    </div>\\
    <div class='d-blank'></div>\\
</div>\\
        ";
        if (array_key_exists('callback', $args))
            $callback = $args['callback'];
        else
            $callback = '';
		
		$onShow='';
		if(array_key_exists('onShow', $args))
			$onShow=",open:function(event, ui){
				test = '$input'+'_onShow';
				dialogo = $(this);
				el = $inputObj;
				if(!window[test]){
					window[test] = true; //evita que se repita el código
				". $args['onShow'] ."
				}
			}";
			
        // codigo javascript
        $script = "
        var $inputXHR;
$(function(){                
    $inputObj.parent().append('<a name=\"modal\" id=\"$imgIdButton\" href=\"#$imgIdModal\" onclick=\"return false;\" title=\"$title\"><img src=\"$img\" border=\"0\" width=\"15\" height=\"15\"></a>');
    $inputObj.data('searchButton', '$imgIdButton');

    if ($('#boxes').length == 0)
        $('body').append(\"<div id=\'boxes\'></div>\");
    $('body #boxes').append(\" $modalWindow \");

    $('#$imgIdModal').dialog({
            'autoOpen':false,
            'title':'$title',
            'modal': true,
            'resizable': false,
            'width':$width,
            'height':240,
            'buttons':{
                'Cerrar':function (){
                    $(this).dialog('close');
                },
                'Buscar':function(){
                    //$(this).find('select:last').addClass('ajax_load2').html('');
                    $('#$inputSelect').addClass('ajax_load2').html('');
                    buscar();
                }
            }$onShow
    });

    $('#$imgIdButton').click(function(e) {
        //Cancel the link behavior
        e.preventDefault();
        $inputTextObj.val('');
        $inputSelectObj.html('');
        $('#$imgIdModal').dialog('open');
        $inputTextObj.focus();
    });

    //if search button is clicked
    function buscar(){
    	if($inputXHR){ $inputXHR.abort(); }
        //if ($inputTextObj.val() != undefined && $inputTextObj.val() != ''){
        if (true){
            plantilla = '<option value=\'valor\'>texto</option>';
            opciones ='';
            $inputXHR = $.post('$url',{ $toScript }, function(data){
            	if (data != ''){";
        if (is_array($description)){
            $vPattern = array_key_exists('pattern', $args)?$args['pattern']:'';
            $val = '';
            if ($vPattern != ''){
                for($i=0;$i<count($description);$i++){
                    if ($model != '')
                        $description[$i] = "data[i].$model.$description[$i]";
                    else
                        $description[$i] = "data[i].$description[$i]";
                }
                $params = array_merge(array($vPattern), $description);
                $val = call_user_func_array('sprintf', $params);
            } else {
                for($i=0;$i<count($description);$i++){
                    if ($i > 0)
                        $val .= '+';
                    if ($model != '')
                        $description[$i] = "data[i].$model.$description[$i]";
                    else
                        $description[$i] = "data[i].$description[$i]";
                    $val .= $description[$i];
                }
            }
            $description = $val;
        } else {
            if ($model != ''){
                $description = "data[i].$model.$description";
            } else {
                $description = "data[i].$description";
            }
        }
        if ($model != ''){
            $id = "data[i].$model.$id";
            $secid = "data[i].$model.$secid";
        } else {
            $id = "data[i].$id";
            $secid = "data[i].$secid";
        }
        
        $script .= " 
                    if (data.length > 0){
                        for(i=0;i<data.length;i++){							
                            if ($id == '' && ".($secid!=''?'true':'false')."){
                                op=plantilla.replace('valor',$secid);								
                            } else
                                op=plantilla.replace('valor',$id);
                            op=op.replace('texto',$description);
                            opciones+=op;
                        }
                    } else {
                        op=plantilla.replace('valor',$id);
                        op=op.replace('texto', $description);
                        opciones+=op;
                    }
                } else {
                    opciones=\"<option value='-'>-</option>\";
                }
                //$inputSelectObj.html(opciones);
				$inputSelectObj.html(opciones).removeClass('ajax_load2');
				$callback
            });
        }
    }

    //if dblclick in select
    $inputSelectObj.dblclick(function(){		
        if($(this).val() != null && $(this).val() != '-'){
            $inputObj.val($(this).val());
			
            $('#$imgIdModal').dialog('close');
            $inputObj.$_event();
        }
    });

    // if keypress on input
    $('#$inputText, #$inputSelect, #$imgIdModal').keyup(function(e){
        var k;
        if (window.event == undefined) k=e.which;
        else k=e.keyCode;
        switch(k){
            case 13: // enter
                if (this.id == '$inputText'){
                    //$(this).parent().find('select:last').addClass('ajax_load2').html('');
                    $('#$inputSelect').addClass('ajax_load2').html('');
                    buscar();
                } else {
                    $inputSelectObj.dblclick();
                }
                return false;
                break;
            case 27: // esc
                $('.windowModal1 .close').click();
                return false;
                break;
            case 40: // down
                //$(this).siblings('select:last').focus();
                $('#$inputSelect').focus();
                break;
        }
    });

});
        ";
        $view =& ClassRegistry::getObject('view');
        $view->addScript(sprintf($this->tags['javascriptblock'], $script));
    }

    //  parametros del metodo:
    //
    //  url = direccion del metodo que atendera la peticion ajax
    //        o controller y action
    //  controlUrl = direccion del metodo que atendera la peticion ajax
    //          o controller y action (que brindara los numeros de
    //          control pendientes de imprimir) [envia numerCon=,
    //          scope=1:solo mios,2:todos]
    //  serialUrl = direccion del metodo que atendera la peticion ajax
    //          o controller y action (que validara la serie)
    //  printUrl = direccion del metodo que atendera la peticion ajax
    //          o controller y action (que validara la serie)
    //  params = array de paramentros a pasar por querystring (action, etc.)
    //  input = nombre del boton input donde se aplicara el buscador
    //  title = titulo del popup
    //  fromField = nombre de la propiedad que traera el valor (#control) del input desde
    //  toField = nombre de la propiedad que traera el valor (#control) del input hasta
    //  docNumberField = nombre de la propiedad que traera el valor del input numero inicial
	//	callback = codigo javascript a ejecutarse después de hacer doble clic en una opcion y antes de cerrar el cuadro de diálogo

    function rangeSelector($args = array()){
        //url
        if (array_key_exists('url', $args))
            $url = Router::url($args['url']);
        elseif ( array_key_exists('controller', $args) ||
                array_key_exists('action', $args) )
            $url = !empty($args['controller']) ? Router::url("/$args[controller]/$args[action]") : Router::url("$args[action]");
        else
            $url = Router::url('', true);
        
		//manejador de eventos
		if(isset($args['event'])){
			$_event = $args['event'];
		} else {
			$_event = 'blur';
		}
        //serialUrl
        if (array_key_exists('serialUrl', $args))
            $serialUrl = Router::url($args['serialUrl']);
        elseif ( array_key_exists('serialController', $args) ||
                array_key_exists('serialAction', $args) )
            $serialUrl = !empty($args['serialController']) ? Router::url("/$args[serialController]/$args[serialAction]") : Router::url("$args[serialAction]");
        else
            $serialUrl = Router::url('', true);

        // controlUrl
        if (array_key_exists('controlUrl', $args))
            $controlUrl = Router::url($args['controlUrl']);
        elseif ( array_key_exists('controlController', $args) ||
                array_key_exists('controlAction', $args) )
            $controlUrl = !empty($args['controlController']) ? Router::url("/$args[controlController]/$args[controlAction]") : Router::url("$args[controlAction]");
        else
            $controlUrl = Router::url('', true);

        // printUrl
        if (array_key_exists('printUrl', $args))
            $printUrl = Router::url($args['printUrl']);
        elseif ( array_key_exists('printController', $args) ||
                array_key_exists('printAction', $args) )
            $printUrl = !empty($args['printController']) ? Router::url("/$args[printController]/$args[printAction]") : Router::url("/$args[printAction]");
        else
            $printUrl = Router::url('', true);
        if (strlen($printUrl)>0){
            if (substr($printUrl,strlen($printUrl)-1)!='/')
                    $printUrl .= '/';
        } else $printUrl = '/';

        $title = array_key_exists('title', $args)?$args['title']:'';

        $input = $args['input'];
        if (empty($input)) exit;
        $inputObj = "$('.$input')";
        $inputVal = "$inputObj.val()";

        $input1 = $args['input'].'Text1';
        $input1Obj = "$('#$input1')";
        $input1Val = "$input1Obj.val()";

        $input2 = $args['input'].'Text2';
        $input2Obj = "$('#$input2')";
        $input2Val = "$input2Obj.val()";

        $input3 = $args['input'].'Text3';
        $input3Obj = "$('#$input3')";
        $input3Val = "$input3Obj.val()";

        $inputSel = $args['input'].'Select';
        $inputSelObj = "$('#$inputSel')";
        $inputSelVal = "$inputSelObj.val()";

        $input4 = $args['input'].'Check';
        $input4Obj = "$('#$input4')";
        $input4Val = "$input4Obj.val()";

        $messageObj = "$('#message')";

        $inputOkButton = $input.'ButtonOk';
        $inputOkButtonObj = "$('#$inputOkButton')";

        $inputCancelButton = $input.'ButtonCancel';
        $inputCancelButtonObj = "$('#$inputCancelButton')";

        if (array_key_exists('fromField', $args))
                $fromField = $args['fromField'];
        else exit;
        if (array_key_exists('toField', $args))
                $toField = $args['toField'];
        else exit;
        if (array_key_exists('docNumberField', $args))
                $docNumberField = $args['docNumberField'];
        else exit;
        
        $toScript = '';
        //tomando los paramentros en el arreglo params
        if (array_key_exists('params', $args)){
            $params = $args['params'];
            $keys = array_keys($params);
            foreach($keys as $key){
                $toScript .= "$key: $params[$key], ";
            }
        }
        $callback = array_key_exists('callback', $args)?$args['callback']:'';
        if ($docNumberField){
            $toScript .= "$input1: $input1Val, $input2: $input2Val, $input3: $input3Val, $inputSel: $inputSelVal";
            $input3Disabled ='';
        } else {
            $toScript .= "$input1: $input1Val, $input2: $input2Val, $inputSel: $inputSelVal";
            $input3Disabled =' disabled=\'disabled\'';
        }
        //if (!empty($model)) $model = $model.'.';
        $imgIdModal = $input.'Modal';
        //div de la ventana modal
        $modalWindow = "\\
            <div id='$imgIdModal' style='display: none;'>\\
                <div class='v-header'>\\
                    <table width='100%' cellpadding='2' cellspacing='0' border='0'>\\
                        <tr>\\
                            <td align='right'>Desde</td>\\
                            <td>\\
                                <input type='text' id='$input1' name='data[DocumentoVenta][desde]' tabindex='1'/>\\
                            </td>\\
                            <td>\\
                                <a id='$input4' href='#' title='Llenado automatico'>Auto</a>\\
                            </td>\\
                        </tr>\\
                        <tr>\\
                            <td align='right'>Hasta</td>\\
                            <td colspan='2'><input type='text' id='$input2' name='data[DocumentoVenta][hasta]' tabindex='2'/></td>\\
                        </tr>\\
                        <tr>\\
                            <td align='right'>Número inicial</td>\\
                            <td colspan='2'><input type='text' id='$input3' name='data[DocumentoVenta][empezar]' {$input3Disabled} tabindex='3'/></td>\\
                        </tr>\\
                        <tr>\\
                            <td align='right'>Documentos</td>\\
                            <td colspan='2'><select id='$inputSel' name='data[DocumentoVenta][alcance]'>\\
                                    <option value='1'>Solo los mios</option>\\
                                </select>\\
                            </td>\\
                        </tr>\\
                    </table>\\
                </div>\\
                <div class='v-blank'>\\
                    <div id='message' class='error-message' align='center'></div>\\
                </div>\\
            </div>\\
        ";
        $script = "
            $(function(){
                if ($('#boxes').length == 0)
                    $('body').append(\"<div id=\'boxes\'></div>\");
                $('body #boxes').append(\" $modalWindow \");

                $('#$imgIdModal').dialog({
                        'autoOpen':false,
                        'title':'$title',
                        'modal': true,
                        'resizable': false,
                        'width':470,
                        'height':220,
                        'buttons':{
                            'Imprimir':function(){imprimir();}
                        },
                        open:function(){
                            $(this)
                            .find('input:first').focus().end()
                            .find(':input:visible:enabled:not(:last)')
                            .bind('keypress.jumpto', function(e){
                                if(e.which==13 || e.KeyCode == 13){
                                    $('#' + this.id).$_event();
                                    $('#' + this.id)
                                    .parent().parent().next().children('td')
                                    .children(':input').focus();
                                }
                            }).end()
                            //fix para enter en ultimo campo
                            .find(':input:last').bind('keypress.enter_fix', function(e){                                        
                                    if(e.which==13 || e.KeyCode == 13){
                                        imprimir();
                                        return false;
                                    }
                            }).end();
                        }});
        
                $inputObj.click(function(e) {
                    //Cancel the link behavior
                    e.preventDefault();
                    $input1Obj.val('');
                    $input2Obj.val('');
                    $input3Obj.val('');
                    $('#$imgIdModal').dialog('open');
                    $input1Obj.focus();
                });

                // button Imprimir
                function imprimir(){
                    var numero = $input3Obj.val()+'';
                    if ($input1Obj.val() != undefined && $input1Obj.val() != '' &&
                            $input2Obj.val() != undefined && $input2Obj.val() != '' &&
                            $input3Obj.val() != undefined && $input3Obj.val() != '' &&
                            numero.length == 9){
                        $.post('$url',{ $toScript }, function(data){
                            if (data != ''){
                                var close = true;
                                $callback
                                window.location.reload();
                                window.open('$printUrl'+$input1Val+'/'+$input2Val, '', '');
                                if (close){
                                    $('#$imgIdModal').dialog('close');
                                }
                            } else {
                                $messageObj.html('No hay respuesta del servidor').show().fadeOut(5000);
                            }
                        });
                    } else {
                        alerta('Los parametros no estan completos');
                    }
                }

                // input1 change
                $input4Obj.click(function() {
                    var control = $input1Val;
                    var scope   = $inputSelVal;  
                    $input1Obj.after('<img src=\"'+ _WEB_ROOT + 'img/ajax1.gif\" class=\"loader\" alt=\"...\">');
                    $input2Obj.after('<img src=\"'+ _WEB_ROOT + 'img/ajax1.gif\" class=\"loader\" alt=\"...\">');
                    $.post('$controlUrl',{numerCon:control, scope:scope}, function(data){
                            var name = eval(data);
                            if (name['des']!=''){
                                    $input1Obj.val(name['$fromField']);
                                    $input2Obj.val(name['$toField']);
                            } else {
                                    $input1Obj.val(name['$fromField']='');
                                    $input2Obj.val(name['$toField']='');
                                    $messageObj.html('No Existe el Numero de control').show().fadeOut(5000);
                            }
                            $('img.loader').remove();
                    }); // $.post
                    return false;
		});
                //numero de documento para controlar, empezar en
                $input3Obj.$_event(function() {
                    var Doc   = $input3Val;
                    $input3Obj.after('<img src=\"'+ _WEB_ROOT + 'img/ajax1.gif\" class=\"loader\" alt=\"...\">');
                    $.post('$serialUrl',{numerDoc:Doc}, function (data){
                        $input3Obj.val(data.result);//cargamos en empezar
                        $('img.loader').remove();
                        $messageObj.html(data.Mensaje).show().fadeOut(5000);
                    });
                });
            });
        ";
        $view =& ClassRegistry::getObject('view');
        $view->addScript(sprintf($this->tags['javascriptblock'], $script));
    }
}
?>
